<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title></title>
  <!--引入Vue-->
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div class="root">
  <h1>人员列表</h1>
  <input v-model="keyword" type="text" placeholder="请输入姓名"/>
  <button @click="sortType= 2">年龄升序</button>
  <button @click="sortType= 1">年龄降序</button>
  <button @click="sortType= 0">原顺序</button>
  <ul>
    <li v-for="(person,index) in filPersons" :key="person.id">
      {{ person.name }}-{{ person.age }}-{{index}}
    </li>
  </ul>
</div>
</body>

<script type="text/javascript">
  new Vue({
    el: '.root',
    data: {
      sortType: 0, //0原顺序,1降序,2升序
      persons: [
        {id: '001',name: '马冬梅',age: 18,gender: '女'},
        {id: '002',name: '周冬雨',age: 14,gender: '女'},
        {id: '003',name: '周杰伦',age: 15,gender: '男'},
        {id: '004',name: '温兆伦',age: 15,gender: '男'},
      ],
      keyword: ''
    },
    methods:{},
    computed:{
      filPersons(){
        const arr = this.persons.filter((p)=>{
          //return后面跟过滤条件
          return p.name.indexOf(this.keyword) !== -1
        })
        //判断是否需要排序
        if(this.sortType){
          arr.sort((p1,p2)=>{
            if(this.sortType===1){
              return p2.age-p1.age
            }else if(this.sortType===2){
              return p1.age-p2.age
            }
          })
        }
        return arr
      }
    }
  })
  /**
   * compareFn定义替代排序顺序的函数。该函数应返回负值、零值或正值
   * 这个a和b是需要比较的对象,需要自己去定义比较逻辑,有点像Java的compareTo
   */
  let arr = [1,2,3,4,5]
  arr.sort((a, b)=>{
    return b-a
  })
  console.log(arr)
</script>
</html>
